Skip to content

own: lazy fills through @nodrops C calls, stores then used, a let given fresh values on some paths (TSLANG 63-66) - #854

Merged
ASDAlexander77 merged 4 commits into
mainfrom
fix-own-items-63
Nov 14, 2026
Merged

ASDAlexander77 merged 4 commits into
mainfrom
fix-own-items-63

Conversation

@ASDAlexander77

Copy link
Copy Markdown
Owner

More gaps found by compiling powder_sandbox's native_ts_graphics under -mm=own (TSLANG_ISSUES 63-66).

  • 63: a lazy getter that fills an empty field through a @nodrops C call (core/nri.ts's cachedVertexBuffer getters). A C declaration with no export, import or dllimport, not variadic, and given and returning only numbers, strings, null/undefined or @cpp handles, runs nothing of the module, so the fill (TSLANG 47) holds across it.
  • 64: a value moved into a field of an object already pushed into an array, then used (simple_pbr_nri.ts). This includes a new in one arm of a ?:.
  • 65: a value moved into an element, or a local's value moved into a field or an element, then used (logic_op_dynamic_state_nri.ts). It borrows the element or field from the store on, as TSLANG 50 does.
  • 66: a let borrowing a field, then given a fresh value on some paths (core/donut_first_person_camera.ts's animate). After a failed dry run, each fresh value goes into a slot of its own, released where the let is, and the let borrows it. Escapes, a field overwritten before the use, and loops are checked like any other borrow. own_err_field_let_assigned now uses a shape that is still refused (the let changed in place through its slot); its old shape compiles and runs correctly.

Sweep of the 276 ntg sources: 807 → 664 errors and 119 → 118 failing, with no source getting more errors. The camera module now compiles, and with its facts so do the calls into it.

Tests: 00tslang_issue_63.ts and 00tslang_issue_66.ts (every model), plus own_err_local_stored_element_reset, own_err_pushed_object_field_popped, own_err_split_let_stored and own_err_split_let_field_overwritten.

Validation: full ctest (Release) passed 7303/7304; the one failure was the outdated own_err_field_let_assigned expectation, which is fixed here and passes. DefaultLib tests.ps1 passes on all four models (see comment).

🤖 Generated with Claude Code

ASDAlexander77 and others added 4 commits November 14, 2026 17:52
… a local or element store then used (TSLANG 63-65)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ws them from a slot of their own (TSLANG 66)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e still cannot be assigned (TSLANG 66 splits the rest)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ASDAlexander77

Copy link
Copy Markdown
Owner Author

DefaultLib tests.ps1 (clean clone, built with this branch's compiler, Release), all four models:

gc:
Finished release, compile : 224/225 passed, 1 skipped
Finished release, jit : 224/225 passed, 1 skipped
Finished debug, compile : 224/225 passed, 1 skipped
Finished debug, jit : 224/225 passed, 1 skipped
Done. All tests passed.
none:
Finished release, compile : 221/225 passed, 4 skipped
Finished release, jit : 221/225 passed, 4 skipped
Finished debug, compile : 221/225 passed, 4 skipped
Finished debug, jit : 221/225 passed, 4 skipped
Done. All tests passed.
rc:
Finished release, compile : 221/225 passed, 4 skipped
Finished release, jit : 221/225 passed, 4 skipped
Finished debug, compile : 221/225 passed, 4 skipped
Finished debug, jit : 221/225 passed, 4 skipped
Done. All tests passed.
own:
Finished release, compile : 219/225 passed, 6 skipped
Finished release, jit : 219/225 passed, 6 skipped
Finished debug, compile : 219/225 passed, 6 skipped
Finished debug, jit : 219/225 passed, 6 skipped
Done. All tests passed.

@ASDAlexander77
ASDAlexander77 merged commit 33877bd into main Nov 14, 2026
8 checks passed
@ASDAlexander77
ASDAlexander77 deleted the fix-own-items-63 branch November 14, 2026 18:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant